package dataStructure;

/**
 * @author WuYongheng
 * @date 2022/3/25
 * @description 接口和存储结构无关
 */
public interface List {

    /**
     * 返回线性表的大小
     * @return
     */
    public int size();

    /**
     * 传入一个下标
     * @param i
     * @return
     */
    public Object get(int i);

    /**
     * 判断是否为空
     * @return
     */
    public boolean isEmpty();

    /**
     * 是否包含
     * @param e
     * @return
     */
    public boolean contains(Object e);

    /**
     * 传入一个对象，返回首次出现的序号
     * @param e
     * @return
     */
    public int indexOf(Object e);

    /**
     * 传入一个对象，在某个索引位置添加
     * @param i
     * @param e
     */
    public void add(int i, Object e);

    /**
     * 在顺序表的末尾添加一个元素
     * @param e
     */
    public void add(Object e);

    /**
     * 将元素e插入到元素obj之前
     * @param obj
     * @param e
     * @return
     */
    public boolean addBefore(Object obj, Object e);

    /**
     * 将元素e插入到元素obj之后
     * @param obj
     * @param e
     * @return
     */
    public boolean addAfter(Object obj, Object e);

    /**
     * 删除指定下标的元素
     * @param i
     * @return
     */
    public Object remove(int i);

    /**
     * 删除指定元素
     * @param e
     * @return
     */
    public boolean remove(Object e);

    /**
     * 将线性表中下标为i的元素替换成e
     * @param i
     * @param e
     * @return
     */
    public Object replace(int i, Object e);
}

